#include"BlockQueue.hpp"

void* consumer(void* args)
{
  BlockQueue<int>* bq = static_cast<BlockQueue<int>*>(args); 
  while(true)
  {
    //sleep(1);
    int key = rand() % 1000;
    bq->push(key);
    cout << "我是生产者，生产数据 : " << key << endl; 
  }
  return nullptr;
}

void* productor(void* args)
{
  BlockQueue<int>* bq = static_cast<BlockQueue<int>*>(args); 
  while(true)
  {
    sleep(1);
    int key = 0;
    bq->pop(key);
    cout << "我是消费者，消费数据(取到数据) : " << key << endl;
  }
  return nullptr;
}

int main()
{
  BlockQueue<int>* bq = new BlockQueue<int>();

  srand(time(nullptr));

  pthread_t c,p;

  pthread_create(&c,nullptr,consumer,bq);
  pthread_create(&p,nullptr,productor,bq);


  pthread_join(c,nullptr);
  pthread_join(p,nullptr);

  return 0;
}
